什麼是Lambda語法?
Lambda函式,是一種匿名函式,不需要定義函式名稱,只有一行運算式,語法非常簡潔,功能強大,程式語言如Java、C#及Python等都支援Lambda函式,適用於小型運算
Lambda語法架構
1 | lambda parameter_list: expression |
1. lambda: 宣告關鍵字
告訴程式我要用lambda語法
2. parameter_list: 傳參數進來的串列
告訴lambda函式要傳哪些參數進來
3. expression: 運算式
告訴lambda函式要執行什麼功能
Python Lambda語法
1. filter()
filter(lambda parameter: expression, iterable)
從某個迭代物件中篩選符合條件的元素
1 | demo = [1,2,3,4,5] |
2. map()
map(lambda parameter: expression, iterable)
在可迭代的物件中,套用特定運算式於每一個元素
1 | demo = [1,2,3,4,5] |
3. sorted()
sorted(iterable, key=lambda parameter: expression)
用來排序可迭代物件中的元素
1 | demo = [('Kobe',24),('Curry',30),('Lebron',23)] |
4. reduced()
reduce(lambda parameter1, parameter2: expression, iterable)
- 將前兩個元素先做Lambda運算
- 將下一個(第三個)元素傳入lambda函式運算
- 依此類推,直到可迭代物件的元素都運算完成<p.s.> 使用reduce函式前需要先載入functools模組
1
2
3
4
5
6
7from functools import reduce
demo = [1,2,3,4,5]
result = reduce(lambda x,y: x+y, demo)
print(result)
15
總結
- Lambda語法簡潔好用,功能強大,但只限一行的程式碼
- 不需要像一般函式要
return
,Lambda函式會自動回傳,但是運算結果要自己轉成list
- Lambda雖然好用,但遇到複雜運算就不可用
- 複雜邏輯運算時,Lambda函式可讀性較差,導致程式較不易維護